/**
 * 后台管理系统首页统计的业务逻辑代码
 */

const db = require("../../db/db")
const initModel = require("../../models/init-models")
const { user, scrip, swiper, code, design } = initModel(db);
const {Op} = require("sequelize");


// 引入删除七牛云的方法
const delQiniu = require("../../comment/delQiniu");

module.exports = {
  // 首页各方面总数统计
  indexInfo: async (req, res) => {
    let total = {};
    // 获取纸条总数
    total.scrip_total = await scrip.count();
    // 获取纸条男总数 (sex_status 性别状态：0 女 1男)
    total.scrip_boy = await scrip.count({
      where: { sex_status: 1 }
    });
    // 获取纸条女总数
    total.scrip_girl = await scrip.count({
      where: { sex_status: 0 }
    });

    // 纸条未审核或审核不通过的总数
    total.no_audit = await scrip.count({
      where: {
        audit: {
          [Op.in]: [1, 3]
        }
      }
    })
    // 审核通过总数
    total.audit = await scrip.count({
      where: {
        audit: 2
      }
    })

    // 用户总数
    total.user_total = await user.count();
    // 用户男总数
    total.user_boy = await user.count({
      where: { sex: 1 }
    })
    // 用户女总数
    total.user_girl = await user.count({
      where: { sex: 0 }
    })

    res.send({
      status: 200,
      msg: "获取成功",
      data: total
    })
  },
  // 获取轮播图、客服二维码、设计图/背景图
  imgInfo: async (req, res) => {
    // 轮播图
    let findSwiper = await swiper.findAll();
    // 客服/背景图
    let imgList = await code.findAll();
    // 设计图
    let findDesign = await design.findAll();

    res.send({
      status: 200,
      msg: "获取成功",
      data: {
        swiper: findSwiper,
        code: imgList[0],
        design: findDesign,
        bg_img: imgList[1]
      }
    })
  },
  // 轮播图新增/客服二维码/背景图替换/设计图新增
  addImg: async (req, res) => {
    // 获取参数
    let { img, type } = req.body;

    // 判断是否有值
    if (img == null || img == "") {
      res.send({
        status: 400,
        msg: "缺少参数"
      });
      return;
    }

    //判断类型
    let imgInfo = null;
    if (type == 1) {
      // 轮播图
      imgInfo = await swiper.create({
        img
      })
    } else if (type == 2) {
      // 客服二维码
      let result = await code.findOne({
        where: { id: 1 }
      });
      // 修改
      result.code_img = img;
      imgInfo = await result.save();

    } else if (type == 3) {
      // 设计图
      imgInfo = await design.create({
        design_img: img,
      })
    } else if(type == 4) {
      // 背景图
      let result = await code.findOne({
        where: { id: 2 }
      });
      // 修改
      result.code_img = img;
      imgInfo = await result.save();
    } else {
      // type类型对不上
      res.send({
        status: 400,
        msg: "类型错误"
      });
      return;
    }
    // 判断是否传类型
    if (imgInfo !== null) {
      res.send({
        status: 200,
        msg: "创建成功",
        data: imgInfo
      })
    } else {
      res.send({
        status: 400,
        msg: "未知错误",
      })
    }

  },
  // 删除设计图
  delImg: async (req, res) => {
    // 获取参数
    let { type, id } = req.body;

    // 判断参数是否有效
    if (id == null) {
      res.send({
        status: 400,
        msg: "缺少参数"
      });
      return;
    }

    // 判断类型
    if (type == 1) {
      // 轮播图
      let findSwiper = await swiper.findOne({
        where: { id }
      });
      if (findSwiper == null) {
        res.send({
          status: 400,
          msg: "没有该轮播图"
        });
        return;
      }
      let img = findSwiper.img;
      // 处理img
      img = img.split("com/")[1];
      // 删除七牛云的图片
      let delOk = await delQiniu(img);
      if(delOk == 200) {
        // 删除
        await findSwiper.destroy();
        // 返回
        res.send({
          status: 200,
          msg: "删除成功",
        });
      } else {
        res.send({
          status: 400,
          msg: "删除出错，请联系后端"
        })
      }
    } else if (type == 2) {
      // 设计图
      // 查找有没有此设计图
      let findDesign = await design.findOne({
        where: { id }
      })

      if (findDesign == null) {
        res.send({
          status: 400,
          msg: "没有此设计图"
        })
        return;
      }
      let img = findDesign.img;
      // 处理img
      img = img.split("com/")[1];
      // 删除七牛云的图片
      let delOk = await delQiniu(img);
      if(delOk == 200) {
        let delRes = await findDesign.destroy();
        if (delRes != null) {
          res.send({
            status: 200,
            msg: "删除成功"
          });
          return;
        }
      }
      res.send({
        status: 400,
        msg: "未知错误"
      })
    } else {
      // type没有传值或者传值不正确
      res.send({
        status: 400,
        msg: "类型错误"
      })
    }


  }
}